package com.zhuhjay.system.domain.vo;

import lombok.AccessLevel;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

/**
 * 用户修改密码的VO对象
 * @author ZhuHJay
 * @date 2022/3/24 22:35
 */
@Data
public class Password {

    /** 正则表达式解析
     * (?=xxx) -> 如果是xxx我才匹配   预测先行搜索
     * (?=.*([a-zA-Z].*)) -> 如果包含有大小写字母我才匹配
     * (?=.*[0-9].*) -> 如果包含有数字我才匹配
     * (?=.*([a-zA-Z].*))(?=.*[0-9].*) -> 如果包含有大小写字母及数字我才匹配
     **/
    @Getter(AccessLevel.NONE)
    @Setter(AccessLevel.NONE)
    private final String regexp = "(?=.*([a-zA-Z].*))(?=.*[0-9].*)[a-zA-Z0-9-*/+.~!@#$%^&*()]{6,20}$";

    /** 登录密码 **/
    @NotBlank(message = "请输入原密码")
    private String password;

    /** 新密码 **/
    @NotBlank(message = "密码不能设置为空")
    @Pattern(regexp = regexp, message = "至少包含数字跟字母,可以有字符,长度为6-20")
    private String newPassword;

    /** 确认密码 **/
    @NotBlank(message = "请再次确认密码")
    private String truePassword;
}
